 _______  _______ _________ _       _________ _______  _______ 
(  ____ )(  ___  )\__   __/( (    /|\__   __/(  ____ \(  ____ )
| (    )|| (   ) |   ) (   |  \  ( |   ) (   | (    \/| (    )|
| (____)|| |   | |   | |   |   \ | |   | |   | (__    | (____)|
|  _____)| |   | |   | |   | (\ \) |   | |   |  __)   |     __)
| (      | |   | |   | |   | | \   |   | |   | (      | (\ (   
| )      | (___) |___) (___| )  \  |   | |   | (____/\| ) \ \__
|/       (_______)\_______/|/    )_)   )_(   (_______/|/   \__/
       ______________________________________________
             __                                      
           /    )               /     /              
       ---/--------)__----__---/__---/__----__---)__-
         /  --,   /   ) /   ) /   ) /   ) /___) /   )
       _(____/___/_____(___(_(___/_(___/_(___ _/_____
                                              
        __                                         __  
|_     |  \ _ |\/| _  _ _|\/| _  _      _ _ /|    /  \ 
|_)\/  |__/(_||  |(_|| _)|  |(_|| )  \/(-|   |.   \__/ 
   /                                                   

////////////////////////////////////
//          What is it?           //
////////////////////////////////////

This is a little program I threw together for games that don't use standard pointer tables.
It only works with 24bit pointers and is not 100% accurate. What is does is scan through 
a block of text in a rom and search for the 24 bit pointers depending on where the end of
strings are in the block. Sometimes more than one pointer are found. The results are output
to a text file. Every string in the block gets it's own line in the output file. If the line
is blank it means it did not find any 24bit matches. What's even more useful is that it allows
for the pointer search to use lorom00, lorom80, hiromc0, or regular pc formats and also to reverse
the byte order when specified. 

////////////////////////////////////
//       How do I use it?         //
////////////////////////////////////

This is a command line program. If you don't know how to use a command line search google. 
The input is as follows.

Usage: PointerGrabber <Rom.ext> <Pointers.ext> <TextStart> <TextEnd> <EndChar> <RomType> <Reverse>

<Rom.ext> is your file to search in. 

<Pointers.ext> is your output file. This can be anything you want. But remember it's a txt file. 

<TextStart> and <TextEnd> should be the start of the block and end of the block in hex.

<EndChar> is the hex code for the end of the string. Most games use FE or FF. This should be in hex
as well. 

<Rom Type> can be lorom00, lorom80, hiromC0, or pc. Case doesn't matter. 

<Reverse> is 1 for reversed bytes (Little Endian) and 0 for not reverse (Big Endian).

That's pretty much it. I included a batch file as an example. Right click and go to edit to look at
it for those who don't know command line stuff. Double click it to run it. 


////////////////////////////////////
//       Final Thoughts           //
////////////////////////////////////

Greetings to everyone in the scene and at romhacking.net. Keep up the good work. 